/**
 * @author xuyh0817
 * @email xuyh0817@foxmail.com
 * @date 2022-02-17 00:34
 * @version 2.0.0
 * @doc todo
 * @website todo
 * @remark  如果要分发源码，需在本文件顶部保留此文件头信息！！
 */

const componentInfos = []

/**
 * 动态加载组件
 *
 * require.context函数执行后返回的是一个函数,并且这个函数有3个属性
 * resolve {Function} -接受一个参数request,request为文件夹下面匹配文件的相对路径,返回这个匹配文件相对于整个工程的相对路径
 * keys {Function} -返回匹配成功模块的名字组成的数组
 * id {String} -执行环境的id,返回的是一个字符串
 */
function dynamicImportFormComponent() {
  const requireComponent = require.context(
    './', // 在当前目录下查找
    true, // 遍历子文件夹
    /index.js$/ // 正则匹配 以 index.js结尾的文件
  )
  requireComponent.keys().forEach(fileName => {
    const comp = requireComponent(fileName)
    if (comp && comp.default && comp.default.component) {
      componentInfos.push(comp.default)
    }
  })
}


dynamicImportFormComponent()
export default [...componentInfos]
